package com.atguigu.lease.common.advice;

import com.atguigu.lease.common.result.Result;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
public class GlobalExceptionHandlers {

    /**
 * 全局异常处理器方法
 * 该方法用于捕获和处理整个应用中未被捕获的异常
 * 它将异常信息封装到Result对象中，并返回给客户端
 *
 * @param e 异常对象，包含了异常类型、消息和栈跟踪等信息
 * @return 返回一个包含异常消息的Result对象，表示操作失败
 */
@ExceptionHandler
public Result<String> exceptionHandler(Exception e){
    // 打印异常的详细栈跟踪信息到控制台，便于开发者分析问题
    e.printStackTrace();
    // 将异常消息封装到Result对象中，并返回给客户端，表示操作失败
    return Result.fail(e.getMessage());
}
/**
 * 处理LeaseException异常的处理器方法
 * 当发生与租约相关的异常时，该方法会被调用，返回一个表示失败结果的对象
 *
 * @param e LeaseException类型的异常对象，包含了异常的具体信息如错误码和错误消息
 * @return Result<String> 返回一个封装了错误信息的结果对象，表示操作失败
 */
@ExceptionHandler
public Result<String> leaseException(LeaseException e){
    // 打印异常的堆栈跟踪信息，用于调试和日志记录
    e.printStackTrace();
    // 创建并返回一个表示操作失败的结果对象，包含异常的错误码和错误消息
    return Result.fail(e.getCode(), e.getMessage());
}

}
